package com.lwy.setter.enums;

/**
 * 菜鸟枚举接口，所有的枚举都应实现该接口或该接口的子接口
 *
 * @author bukong
 * @date 2023/7/28
 */
public interface BaseCnEnum {

    String name();

    /**
     * <p>获取枚举值（整型）</p>
     * <p>建议：value 在初始定义的时候不要采用连续值，避免后续无法扩展，推荐采用如: 100、200、300...类似的序列<p>
     *
     * @return 枚举值
     */
    Integer getValue();

    /**
     * 获取枚举名称
     *
     * @return 枚举名称
     */
    String getTitle();

    /**
     * 获取枚举详细说明
     *
     * @return 枚举说明
     */
    default String getDescription() {
        return "";
    }

    ;

    /**
     * <p>用于判断传入的枚举数值是否与期望的枚举值相同</p>
     *
     * @param enumValue 传入的枚举数值
     * @return 是否相等，true or false
     */
    default boolean eq(Integer enumValue) {
        if (enumValue == null) {
            return false;
        }
        return getValue().equals(enumValue);
    }

    default boolean eq(String enumName) {
        if (enumName == null) {
            return false;
        }
        return name().equals(enumName);
    }
}
